package com.gxa.www.cl.service.impl;

import com.gxa.www.cl.common.util.DCMd5Util;
import com.gxa.www.cl.service.SysAdminService;
import com.gxa.www.cl.domain.dto.LoginFormParamDTO;
import com.gxa.www.cl.common.base.RespResult;
import com.gxa.www.cl.mapper.SysAdminMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils; // 引入 DigestUtils 进行 MD5 加密

import java.util.HashMap;
import java.util.Map;

@Service
public class SysAdminServiceImpl implements SysAdminService {

    @Autowired
    private SysAdminMapper sysAdminMapper;

    @Override
    public RespResult login(LoginFormParamDTO loginFormParamDTO) {
        // 打印调试信息
        System.out.println("loginFormParamDTO: " + loginFormParamDTO);
        System.out.println("userName: " + loginFormParamDTO.getUser_name());
        System.out.println("userPwd: " + loginFormParamDTO.getUser_pwd());

        // 检查 loginFormParamDTO 是否为 null
        if (loginFormParamDTO == null) {
            return RespResult.error("登录参数不能为空");
        }

        // 获取用户名和密码并检查是否为 null
        String userName = loginFormParamDTO.getUser_name();
        String userPwd = loginFormParamDTO.getUser_pwd();

        if (userName == null || userPwd == null) {
            return RespResult.error("用户名或密码不能为空");
        }

        // 对输入的密码进行 MD5 加密
        String encryptedPassword = DCMd5Util.getMd5(userPwd);

        // 从数据库中获取用户密码
        String storedPassword = sysAdminMapper.getPasswordByUsername(userName);

        // 验证密码是否匹配
        if (storedPassword != null && storedPassword.equals(encryptedPassword)) {
            // 返回成功结果
            return RespResult.success("登录成功", new HashMap<String, Object>() {{
                put("username", userName);
                put("role", "admin"); // 假设所有用户角色都是 admin，可以根据实际情况修改
            }});
        } else {
            // 返回失败结果
            return RespResult.error("用户名或密码错误");
        }
    }


    @Override
    public RespResult findSysUserAll() {
        return null;
    }

    @Override
    public RespResult updatePassword(Map<String, String> passwordData) {
        // 获取用户名和新密码
        String username = passwordData.get("username");
        String newPassword = passwordData.get("newpassword");

        // 检查用户名和新密码是否为空
        if (username == null || newPassword == null) {
            return RespResult.error("用户名或新密码不能为空");
        }

        // 对新密码进行 MD5 加密
        String encryptedNewPassword = DigestUtils.md5DigestAsHex(newPassword.getBytes());

        // 模拟更新密码逻辑
        if ("admin".equals(username)) {
            // 假设更新密码成功
            return RespResult.success("密码更新成功");
        } else {
            // 返回失败结果
            return RespResult.error("用户名不存在");
        }
    }
}